Routing is the process of selecting paths in a network for the purpose of directing network traffic along such paths. Routing may be performed for a variety of network types including, for example, electronic data exchange networks, telephone networks, and transportation networks. The goal of routing is to identify optimal paths through a network that fulfill network demands while minimizing costs and maximizing network efficiency. When the number of nodes in a given network is too large, finding global optimal solutions for these paths may be difficult, and in some instances it may be impossible.
Traditionally, these optimal paths were merely approximated using a variety of approximating techniques (e.g., genetic algorithm, ant colony algorithm, simulated annealing, etc.). However, these existing methods are computationally expensive because they must be repeatedly executed to achieve the approximation. Further, these approximations converge very slowly on the solution, and these existing methods often assume that the demands of the network are static. As a result, these existing solutions often fail to fulfill the ever-changing demands of a network.